package de.laures.cewolf.example;

import java.io.Serializable;
import java.util.Date;
import java.util.Map;

import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.data.xy.XYDataset;

import de.laures.cewolf.AbstractDatasetProducer;
import de.laures.cewolf.DatasetProduceException;
import de.laures.cewolf.links.XYItemLinkGenerator;
import de.laures.cewolf.tooltips.TableToolTip;
import de.laures.cewolf.tooltips.ToolTip;
import de.laures.cewolf.tooltips.XYToolTipGenerator;

public class LineData extends AbstractDatasetProducer implements XYToolTipGenerator,
		XYItemLinkGenerator, Serializable {

	@Override
	public String generateLink(Object data, int series, int item) {
		return "javascript:void(0);";
	}

	@Override
	public ToolTip generateToolTip(XYDataset data, int series, int item, String tt) {
		TableToolTip tip = new TableToolTip("网宿加速图片监测", true, tt);
		tip.setNames("时间", "性能(秒)", "可用性(%)", "监测点数", "成功点数", "错误点数", "排除点数");
		tip.setValues("2013年02月02日 16:00--<br>2013年02月02日 17:00", "  0.180", "100.00", "29", "29",
				"0", "0");
		return tip;
	}

	@Override
	public Object produceDataset(Map params) throws DatasetProduceException {
		TimeSeries ts = new TimeSeries("Schedule1", Month.class);
		ts.add(new Month(7, 2002), 0.2);
		ts.add(new Month(8, 2002), 0.4);
		ts.add(new Month(9, 2002), 0.9);
		ts.add(new Month(10, 2002), 1.0);

		TimeSeries ts2 = new TimeSeries("Schedule2", Month.class);
		ts2.add(new Month(7, 2002), 0.5);
		ts2.add(new Month(8, 2002), 0.9);
		ts2.add(new Month(9, 2002), 0.1);
		ts2.add(new Month(10, 2002), 0.4);

		TimeSeries ts3 = new TimeSeries("Schedule3", Month.class);
		ts3.add(new Month(7, 2002), 0.6);
		ts3.add(new Month(8, 2002), 0.7);
		ts3.add(new Month(9, 2002), 0.8);
		ts3.add(new Month(10, 2002), 0.9);
		TimeSeriesCollection col = new TimeSeriesCollection();
		col.addSeries(ts);
		col.addSeries(ts2);
		col.addSeries(ts3);
		return col;
	}

	@Override
	public boolean hasExpired(Map params, Date since) {
		return false;
	}

	@Override
	public String getProducerId() {
		return "TimeDataProducer";
	}

}
